package com.gt.queue;

import com.gt.common.QueueConstant;
import org.apache.log4j.Logger;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.HashMap;

/**
 * 消息生产者
 */
@Component
public class RbSender {
    private static Logger logger = Logger.getLogger(RbSender.class);
    @Autowired
    private AmqpTemplate amqpTemplate;

    public void send(HashMap<String, Object> msg){
        logger.info("bug Message was sand to the queue by rabbitMq");
        /**
         * 这里关键的代码为 rabbitTemplate.convertAndSend() 方法，QueueConstant.DEBUG_QUEUE 这个是路由规则（routingKey），
         * 它的值表明将消息发送到指定的队列 QueueConstant.DEBUG_QUEUE 中去，这里跟了下源码，发现 convertAndSend() 方法最后调用的方法其实是一个 doSend() 方法
         */
        this.amqpTemplate.convertAndSend(QueueConstant.DEBUG_QUEUE, msg);
    }
    public void send(String msg){
        logger.info("bug Message was sand to the queue by rabbitMq");
        /**
         * 这里关键的代码为 rabbitTemplate.convertAndSend() 方法，QueueConstant.DEBUG_QUEUE 这个是路由规则（routingKey），
         * 它的值表明将消息发送到指定的队列 QueueConstant.DEBUG_QUEUE 中去，这里跟了下源码，发现 convertAndSend() 方法最后调用的方法其实是一个 doSend() 方法
         */
        this.amqpTemplate.convertAndSend(QueueConstant.DEBUG_QUEUE, msg);
    }
}
